package com.example.tpl.system.service;

import com.example.tpl.system.util.Result;
import com.example.tpl.system.util.ResultPage;
import com.example.tpl.system.vo.common.DeleteBatchReqVo;
import com.example.tpl.system.vo.common.QueryDetailReqVo;
import com.example.tpl.system.vo.common.UpdateStatusReq;
import com.example.tpl.system.vo.req.QueryUserReqVo;
import com.example.tpl.system.vo.req.UserLoginReqVo;
import com.example.tpl.system.vo.req.UserReqVo;
import com.example.tpl.system.vo.req.UserRoleReqVo;
import com.example.tpl.system.vo.resp.UserMenuRespVo;
import com.example.tpl.system.vo.resp.UserRespVo;
import com.example.tpl.system.vo.resp.UserRoleRespVo;

/**
 * 描述：用户信息
 * 作者：刘飞华
 * 日期：2025/01/13 17:57:37
 */
public interface UserService {

    /**
     * 添加用户信息
     *
     * @param user 请求参数
     * @return int
     * @author 刘飞华
     * @date: 2025/01/13 17:57:37
     */
    Result<Integer> addUser(UserReqVo user);

    /**
     * 删除用户信息
     *
     * @param user 请求参数
     * @return int
     * @author 刘飞华
     * @date: 2025/01/13 17:57:37
     */
    Result<Integer> deleteUser(DeleteBatchReqVo user);

    /**
     * 更新用户信息
     *
     * @param user 请求参数
     * @return int
     * @author 刘飞华
     * @date: 2025/01/13 17:57:37
     */
    Result<Integer> updateUser(UserReqVo user);

    /**
     * 更新用户信息状态
     *
     * @param user 请求参数
     * @return int
     * @author 刘飞华
     * @date: 2025/01/13 17:57:37
     */
    Result<Integer> updateUserStatus(UpdateStatusReq user);

    /**
     * 查询用户信息详情
     *
     * @param user 请求参数
     * @return UserResp
     * @author 刘飞华
     * @date: 2025/01/13 17:57:37
     */
    Result<UserRespVo> queryUserDetail(QueryDetailReqVo user);

    /**
     * 查询用户信息列表
     *
     * @param user 请求参数
     * @return ResultPage<UserResp>
     * @author 刘飞华
     * @date: 2025/01/13 17:57:37
     */
    Result<ResultPage<UserRespVo>> queryUserList(QueryUserReqVo user);

    /**
     * 用户登录
     *
     * @param record 请求参数
     * @return Result<String>
     * @author 刘飞华
     * @date: 2025/01/13 17:57:37
     */
    Result<String> login(UserLoginReqVo record);

    /**
     * 查询用户菜单
     *
     * @return Result<UserMenuRespVo>
     * @author 刘飞华
     * @date: 2025/01/13 17:57:37
     */
    Result<UserMenuRespVo> queryUserMenu();

    /**
     * 查询用户角色
     *
     * @param userId 请求参数
     * @return UserRoleRespVo
     * @author 刘飞华
     * @date: 2025/01/13 17:57:37
     */
    Result<UserRoleRespVo> queryUserRole(Long userId);

    /**
     * 更新用户角色
     *
     * @param record 请求参数
     * @return Integer
     * @author 刘飞华
     * @date: 2025/01/13 17:57:37
     */
    Result<Integer> updateUserRole(UserRoleReqVo record);


}